package com.luyou.awt.component;

import javax.swing.*;
import java.awt.*;

/**
 * AWT提供了如下基本组件。
 * ➢ Button：按钮，可接受单击操作。
 * ➢ Canvas：用于绘图的画布。
 * ➢ Checkbox：复选框组件（也可变成单选框组件）。
 * ➢ CheckboxGroup：用于将多个Checkbox组件组合成一组，一组Checkbox组件将只有一个可以被选中，即全部变成单选框组件。
 * ➢ Choice：下拉式选择框组件。
 * ➢ Frame：窗口，在GUI程序里通过该类创建窗口。
 * ➢ Label：标签类，用于放置提示性文本。
 * ➢ List：列表框组件，可以添加多项条目。
 * ➢ Panel：不能单独存在基本容器类，必须放到其他容器中。
 * ➢ Scrollbar：滑动条组件。如果需要用户输入位于某个范围的值，就可以使用滑动条组件，比如调色板中设置RGB的三个值所用的滑动条。
 * 当创建一个滑动条时，必须指定它的方向、初始值、滑块的大小、最小值和最大值。
 * ➢ ScrollPane：带水平及垂直滚动条的容器组件。
 * ➢ TextArea：多行文本域。
 * ➢ TextField：单行文本框。
 */
public class CommonComponent {

    JFrame f = new JFrame("测试窗口");
    //定义一个按钮
    Button ok = new Button("确认");
    CheckboxGroup cbg = new CheckboxGroup();
    //定义两个个单选框，初始状态为选中和未选中
    Checkbox male = new Checkbox("男", cbg, true);
    Checkbox female = new Checkbox("女", cbg, false);

    //定义一个复选框,初始没有选中
    Checkbox married = new Checkbox("是否已婚?", false);

    //定义一个下拉框
    Choice colorChoice = new Choice();

    //定义一个列表选择框
    List colorList = new List(6, true);

    //定义5行,20列的多行文本域
    TextArea ta = new TextArea(5, 20);

    //定义一个50列的单行文本域
    TextField name = new TextField(50);

    public void init(){
        colorChoice.add("红色");
        colorChoice.add("绿色");
        colorChoice.add("蓝色");

        colorList.add("红色");
        colorList.add("绿色");
        colorList.add("蓝色");

        Panel bottom = new Panel();
        bottom.add(name);
        bottom.add(ok);
        f.add(bottom, BorderLayout.SOUTH);

        //创建一个装载了下拉选择框、三个checkbox的Panel;
        Panel checkPanel = new Panel();
        checkPanel.add(colorChoice);
        checkPanel.add(male);
        checkPanel.add(female);
        checkPanel.add(married);

        //创建了一个垂直排列组件的Box,盛装多行文本域、Panel;
        Box topLeft = Box.createVerticalBox();
        topLeft.add(ta);
        topLeft.add(checkPanel);

        //创建一个水平排列的Box,盛装topLef colorList
        Box top = Box.createHorizontalBox();
        top.add(topLeft);
        top.add(colorList);

        f.add(top);
        f.pack();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);
    }

    public static void main(String[] args) {
        new CommonComponent().init();
    }

}
